<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>原型</title>
</head>

<body>
  <script>
    // 1、原型是什么？
    //   一个对象 我们也称prototype为原型对象
    // 2、原型的作用是什么
    //   共享方法

    // ---------------------------使用原型对象之前----------------------
    function Star1(uname, age) {
      this.uname = uname;
      this.age = age;
      this.say = function () {
        console.log(1111);
      }
    }
    var zsf = new Star1('张三丰', 100)
    var wjk = new Star1('王俊凯', 22)
    // zsf创建一个自己的say  wjk也自己创建一个say  100个实例对象就要在内存中创建100个say
    // 浪费内存
    console.log(zsf.say === wjk.say);  // false


    // ---------------------------使用原型对象之后----------------------
    function Star2(uname, age) {
      this.uname = uname;
      this.age = age;
    }
    Star2.prototype.say = function () {
      console.log(11111);
    }
    var wy = new Star2('王源', 22)
    var yyqx = new Star2('易烊千玺', 22)
    // 实现多个实例对象 共享公共的方法
    console.log(wy.say === yyqx.say);  //true


    // 每个构造函数 都有prototype原型对象
    // 一般情况下 我们的公共属性定义到构造函数里 公共的方法放到原型对象中


  </script>
</body>

</html>